package com.bl.student.service.biz.user;

import com.bl.student.dao.model.TagEntity;
import com.bl.student.dao.model.TeacherStudentEntity;
import com.bl.student.dao.model.UserEntity;
import com.bl.student.dao.redis.model.UserInfo;
import com.bl.student.service.vo.DelBody;
import com.bl.student.service.vo.DelListBody;
import com.bl.student.service.vo.information.MyPageVo;
import com.bl.student.service.vo.tag.TagListVo;
import com.bl.student.service.vo.user.*;
import org.springframework.data.domain.Pageable;
import java.util.List;

/**
 * Created by yujingyi on 2018/1/15.
 */
public interface UserService {

    UserSimpleInfoVo getUserById(String userId, String type);

    UserEntity getUserByMobile(String mobile);

    UserEntity getUserByHxName(String hxName);

    UserEntity getUserByUnionId(String unionId);

    UserEntity getUserByOpenId(String unionId);

    UserEntity getUserByAccount(String account);

    void createUser(UserEntity userEntity);

    void modifyUser(UserInfoModifyVo userInfoModifyVo, UserInfo userInfo);

    MyPageVo getMyPage(String userId);

    UserInviteVo getUserInviteList(String userId);

    void addUserInvite(String inviterId, String inviteeId);

    UserEntity getUserByInviteCode(String inviteCode);

    List<String> getUserTag(String userId);

    UserListVo getUserList(Pageable pageable);

    UserListVo getUserListByName(String name ,Pageable pageable);

    void delTag(DelBody id);

    void addTag(String name, String userId);

    void modTagList(List<String> tagNameList, String userId);

    void del(DelBody id);

    void delList(DelListBody idList);

    void modify(UserInfoManageModifyVo goodsModVo);

    TeacherStudentEntity getTeacherStudent(String studentId);

    UserListVo getUserListMulti(String id,String mobile,String nickname,String status, Pageable pageable);

}
